﻿/**
 * 模型，提供了关系支持，如：父子关系。
 */
Ext.define('Happy.data.Model', {
    extend: 'Ext.data.Model',
    requires: [
        'Happy.data.proxy.Ajax',
        'Happy.data.relation.RelationUtil'
    ],

    /**
     * @cfg 模型的关系。
     *
         * 代码示例：
         *
         *     @example
         *     relation: {
         *          hasMany:[ { name: 'OrderItems', store: 'Examples.order.store.OrderItem', isNested: true } ]
         *     }
     */
    relation: {},

    constructor: function () {
        var me = this;

        me.callParent(arguments);

        Happy.data.relation.RelationUtil.setRelatedValue(me, me.raw);
    },

    /**
     * 重写 ExtJs，当操作成功后修正记录相关的数据，如：订单的订单项列表。
     */
    save: function (options) {
        var me = this;

        options = options || {};

        options.success = Ext.Function.createInterceptor(options.success || Ext.emptyFn, function (record_i, operation) {
            var record = operation.resultSet.records[0];
            if (record) {
                Happy.data.relation.RelationUtil.setRelatedValue(me, record.raw);
            }
        }, options.scope || window);

        return me.callParent(arguments);
    }
});